



// 身份证效验JS
function  checkIdcard(idcard){  

	var Errors = new Array(  
	"验证通过!",  
	"身份证号码位数不对!",  
	"身份证号码出生日期超出范围或含有非法字符!",  
	"身份证号码校验错误!",  
	"身份证地区非法!"  
	);  
	var   area={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"xingjiang",71:"台湾",81:"香港",82:"澳门",91:"国外"}    
	   
	var   idcard,Y,JYM;  
	var   S,M;  
	var   idcard_array   =   new   Array();  
	idcard_array   =   idcard.split("");  
	//地区检验  
	if(area[parseInt(idcard.substr(0,2))]==null)   return   false;  
	//身份号码位数及格式检验  
	switch(idcard.length){  
	case   15:  
	if   (   (parseInt(idcard.substr(6,2))+1900)   %   4   ==   0   ||   ((parseInt(idcard.substr(6,2))+1900)   %   100   ==   0   &&   (parseInt(idcard.substr(6,2))+1900)   %   4   ==   0   )){  
	ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性  
	}   else   {  
	ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性  
	}  
	if(ereg.test(idcard))   return   true;  
	else   return   false;  
	break;  
	case   18:  
	//18位身份号码检测  
	//出生日期的合法性检查    
	//闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))  
	//平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))  
	if   (   parseInt(idcard.substr(6,4))   %   4   ==   0   ||   (parseInt(idcard.substr(6,4))   %   100   ==   0   &&   parseInt(idcard.substr(6,4))%4   ==   0   )){  
	ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式  
	}   else   {  
	ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式  
	}  
	if(ereg.test(idcard)){//测试出生日期的合法性  
	//计算校验位  
	S   =   (parseInt(idcard_array[0])   +   parseInt(idcard_array[10]))   *   7  
	+   (parseInt(idcard_array[1])   +   parseInt(idcard_array[11]))   *   9  
	+   (parseInt(idcard_array[2])   +   parseInt(idcard_array[12]))   *   10  
	+   (parseInt(idcard_array[3])   +   parseInt(idcard_array[13]))   *   5  
	+   (parseInt(idcard_array[4])   +   parseInt(idcard_array[14]))   *   8  
	+   (parseInt(idcard_array[5])   +   parseInt(idcard_array[15]))   *   4  
	+   (parseInt(idcard_array[6])   +   parseInt(idcard_array[16]))   *   2  
	+   parseInt(idcard_array[7])   *   1    
	+   parseInt(idcard_array[8])   *   6  
	+   parseInt(idcard_array[9])   *   3   ;  
	Y   =   S   %   11;  
	M   =   "F";  
	JYM   =   "10X98765432";  
	M   =   JYM.substr(Y,1);//判断校验位  
	if(M   ==   idcard_array[17])   return   true;   //检测ID的校验位  
	else   return   false;  
	}  
	else   return   false;  
	break;  
	default:  
	return   false;  
	break;  
	}  
}


//函 数 名：chkdate
//功能介绍：只能为数字和小数点
//参数说明：要检查的textbox控件
function clearNoNum(obj)
{
		//先把非数字的都替换掉，除了数字和.
		obj.value = obj.value.replace(/[^\d.]/g,"");
		//必须保证第一个为数字而不是.
		obj.value = obj.value.replace(/^\./g,"");
		//保证只有出现一个.而没有多个.
		obj.value = obj.value.replace(/\.{2,}/g,".");
		//保证.只出现一次，而不能出现两次以上
		obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$",".");
}


	
	
//函 数 名：chkdate
//功能介绍：检查是否为日期
//参数说明：要检查的字符串
//返 回 值：0：不是日期  1：是日期
function chkdate(datestr)
{
 var lthdatestr
 if (datestr != "")
  lthdatestr= datestr.length ;
 else
  lthdatestr=0;
  
 var tmpy="";
 var tmpm="";
 var tmpd="";
 //var datestr;
 var status;
 status=0;
 if ( lthdatestr== 0)
  return 0


 for (i=0;i<lthdatestr;i++)
 { if (datestr.charAt(i)== '-')
  {
   status++;
  }
  if (status>2)
  {
   //alert("Invalid format of date!");
   return 0;
  }
  if ((status==0) && (datestr.charAt(i)!='-'))
  {
   tmpy=tmpy+datestr.charAt(i)
  }
  if ((status==1) && (datestr.charAt(i)!='-'))
  {
   tmpm=tmpm+datestr.charAt(i)
  }
  if ((status==2) && (datestr.charAt(i)!='-'))
  {
   tmpd=tmpd+datestr.charAt(i)
  }

 }
 year=new String (tmpy);
 month=new String (tmpm);
 day=new String (tmpd)
 //tempdate= new String (year+month+day);
 //alert(tempdate);
 if ((tmpy.length!=4) || (tmpm.length>2) || (tmpd.length>2))
 {
  //alert("Invalid format of date!");
  return 0;
 }
 if (!((1<=month) && (12>=month) && (31>=day) && (1<=day)) )
 {
  //alert ("Invalid month or day!");
  return 0;
 }
 if (!((year % 4)==0) && (month==2) && (day==29))
 {
  //alert ("This is not a leap year!");
  return 0;
 }
 if ((month<=7) && ((month % 2)==0) && (day>=31))
 {
  //alert ("This month is a small month!");
  return 0;
 
 }
 if ((month>=8) && ((month % 2)==1) && (day>=31))
 {
  //alert ("This month is a small month!");
  return 0;
 }
 if ((month==2) && (day==30))
 {
  //alert("The Febryary never has this day!");
  return 0;
 }
 
 return 1;
}



//函 数 名：fucCheckNUM
//作    者：张晶亮
//功能介绍：检查是否为数字
//参数说明：要检查的数字
//返 回 值：1为是数字，0为不是数字
function fucCheckNUM(NUM)
{
 var i,j,strTemp;
 strTemp="0123456789";
 if ( NUM.length== 0)
  return 0
 for (i=0;i<NUM.length;i++)
 {
  j=strTemp.indexOf(NUM.charAt(i)); 
  if (j==-1)
  {
  //说明有字符不是数字
   return 0;
  }
 }
 //说明是数字
 return 1;
}